home *** CD-ROM | disk | FTP | other *** search
/ BMUG PD-ROM B4 / PD-ROM B4.iso / Utilities / Text and Speech / Alpha 5.3 / Help / Alpha Help next >
Text File  |  1993-02-09  |  71KB  |  1,837 lines

  1. ==============================================================================
  2. = Copyright © 1990, 1991, 1992 Pete Keleher. All Rights Reserved.
  3. ==============================================================================
  4.  
  5. The Author(s) of this product are in no way liable for any direct or 
  6. indirect damage caused by the product. 
  7.  
  8. You may freely copy and distribute ALPHA, but please bear in mind that 
  9. ALPHA is Shareware. If you decide to keep it, please register your copy by 
  10. sending $25 to the author. Site licences are $110. Source licenses are also 
  11. available, inquire with the author. If you include an internet (or 
  12. Compuserve) address with your registration, I will notify you when new 
  13. versions become available. Please make any check or money order out to Pete 
  14. Keleher, NOT TO RICE UNIVERSITY. 
  15.  
  16. E-mail address:     pete@rice.edu
  17. Snail-mail address: Pete Keleher
  18.                     P.O. Box 1892
  19.                     Dept. of Computer Science
  20.                     Rice University
  21.                     Houston, TX 77251-1892
  22.  
  23. I am collecting user-written Tcl procs and XTCLs in public/Alpha/contrib on 
  24. cs.rice.edu. If you have written anything that you think may be of general 
  25. interest, please send it to me and I will make it available. 
  26.  
  27. Thanks to Masatsugu Nagata, Karl J. Smith, Tim Endres, Eric Sink, 
  28. David C. Black, Richard T. Austin, Tom Scavo, and Jerry Fowler. 
  29.  
  30.  
  31. What to do:   USE THE "Sections" MENU IN THIS FILE!. This file contains 
  32. "marks" that let you jump to different sections of this file. Mouse-down 
  33. on the box that says "Sections" and move to the section you need.
  34.  
  35. Alpha is a very powerful, multi-purpose editor that allows any program- 
  36. or user-defined function to be bound to any keystroke, or placed into 
  37. user-defined menus. Only the "File", "Edit", and "Search" menus are 
  38. predefined and immutable. The rest are defined in the startup file 
  39. ("AlphaBits.tcl") or files sourced from inside it. 
  40.  
  41. Alpha uses Dr. Ousterhout's Tool Command Language (Tcl) as an extension 
  42. language. See the "Help" menu for a complete definition of the language. 
  43. Alpha uses a port of Tcl done by Tim Endres for his "Tickle" application, 
  44. and supports many of the same extensions. Many of the functions bound to 
  45. keystrokes, as well as many of the functions in the user-defined menus, are 
  46. written in Tcl. 
  47.  
  48. Callable functions in Alpha come in three different flavors. First, there 
  49. are the basic Alpha editor functions; these are discussed in the section 
  50. entitled "Simple Cmds" below. These functions take no arguments and do 
  51. not return values.
  52.  
  53. Second, there are additional Tcl extensions discussed in the "Alpha Tcl 
  54. Extensions" help file (look in the "Help" menu). Most of these functions 
  55. either take arguments or return values. 
  56.  
  57. Finally, there are the Tcl functions defined with "proc". Most of Alpha's 
  58. predefined functions are in "procs.tcl", some are in "shell.tcl". 
  59.  
  60. The only way to get to know the editor and the language is to try different 
  61. things out. Play around. Choose "Misc:List Bindings" to get a listing of 
  62. all the current keystoke bindings. Look in "procs.tcl" for definitions of 
  63. the routines. Look in "AlphaBits.tcl" for definitions of the last six 
  64. menus. And finally, please feel free to send suggestions/"feature" 
  65. reports/questions to me at pete@cs.rice.edu. I am not able to answer US 
  66. postal mail, but if you send it to me I will at least read it. Have fun! 
  67.  
  68. Finally, memory usage and startup speed. Alpha uses a lot of memory, and it 
  69. takes a while to start up. One important reason for this is that the 
  70. default setup executes a large amount of Tcl code. Much of this you 
  71. probably won't need. "procs.tcl" has over 1000 lines of code it it. Much of 
  72. this you probably won't use every day, and can be cut out. "procs.tcl" 
  73. includes the file "latex.tcl", which has 600 more lines of tcl. If you 
  74. don't use these functions, change the following line in "procs.tcl":
  75.     set usingLatex 1
  76. to
  77.     set usingLatex 0
  78. The next you start up Alpha the Latex functions won't be loaded.
  79.  
  80. Additionally, "globbing" while creating file sets can take a significant 
  81. amount of time (look at the beginning of "procs.tcl").
  82.  
  83.  
  84.  
  85.  
  86. ==============================================================================
  87. = Reading and Storing Files
  88. ==============================================================================
  89. The primary method of either reading or storing files with Alpha, or any 
  90. other Mac editor, is through the GetFile and PutFile dialogs. However, 
  91. Alpha's dialogs are not exactly like those of other applications. 
  92.  
  93. The GetFile dialog has two additional items: a "Readonly" checkbox and an 
  94. "All Files" checkbox. The first allows you to open a file as read only. 
  95. Files in the readonly state can not be modified, only read. A writable file 
  96. is indicated by a pen icon to the left of the horizontal scrollbar. A 
  97. readonly file is indicated by a pen with a line through it. If you change 
  98. your mind about the file, it's readonly status can be changed by clicking 
  99. on the pen icon. 
  100.  
  101. The second checkbox, "All Files", allows Alpha to open any file rather 
  102. than just those of type 'TEXT'. The type of a file can be determined by 
  103. using the 'll' alias in the Tcl shell.
  104.  
  105.  
  106. The PutFile dialog is used to prompt the user for a new name under which to 
  107. save the contents of a window. This dialog has been enhanced by two popup 
  108. menus: "State" and "Format". "State" allows you to specify how much 
  109. information should be saved in the resource fork of files that you use. If 
  110. the state is set to "MPW", window position, current selection, tab sizes, 
  111. and font information are saved into the resource fork of your application 
  112. every time you open and close it, *even if you don't modify the file*. 
  113. Alpha still manages to coexist with build or make files because saving this 
  114. information does not change the modification date of the file. If the state 
  115. is set to "Think", neither the window position nor the current selection 
  116. are saved. If state is set to "None", no information is saved. The default 
  117. value for saved state can by changed by setting the Alpha variable 
  118. 'savedState' to "mpw", "think", or "none". Note that if a given file 
  119. already has mpw information in it when the file is open, Alpha will always 
  120. update that information when the file is closed. Note also that "marks" 
  121. are always saved in the resource fork whenever a file is saved, 
  122. regardless of the setting of the 'savedState' variable.
  123.  
  124. The "Format" menus allows the way Alpha terminates lines to be changed. 
  125. The Mac uses a carriage return to mark the end of a line, Unix uses a 
  126. linefeed, and IBM uses both (of course). Alpha can read and write any of 
  127. these formats, and can convert between them just by opening a file, 
  128. choosing "Save As", and changing the selection in this menu. Note that if 
  129. you are going to be sharing files with a Unix or IBM machine, you 
  130. probably don't want anything in your resource fork, so you'd probably 
  131. want to set 'savedState' to 'none' in your AlphaBits.tcl file.
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138. ==============================================================================
  139. = The Window
  140. ==============================================================================
  141.  
  142. Alpha's windows have several non-standard features. 
  143.  
  144. First, on the title bar at the left, there are either one or two boxes. If 
  145. there is only one box, the box implements a popup menu of all marks set in 
  146. the file. If there are two boxes, the left box implements a popup menu of 
  147. all functions in the current file (as defined by the 'funcExpr' regular 
  148. expression) and the right box implements the mark menu. These boxes can 
  149. be turned off via the flag 'showMenuHeads' in the "Utils:Flags" submenu. 
  150.  
  151. On the right of the titlebar, there is a running display of the current 
  152. row and column. These boxes can be turned off via the 'showRowCol' flag.
  153.  
  154. All title-bar boxes are turned off when Alpha is using full names for 
  155. window titles.
  156.  
  157. At the bottom of the window, the first box is a status display area. 
  158. Also, "Utils:Execute…" prompts for a Tcl expression in this space. To the 
  159. right of the status area is an icon displaying the readonly status of the 
  160. file. If the icon is just a pen, the file is writable. If the icon is a 
  161. pen w/ a bar through it, the file is not writable. The readonly status of 
  162. the window can be toggled by clicking on the icon.
  163.  
  164. To the right of the readonly icon area is the mode display area. Alpha 
  165. allows you to have any number of different modes, w/ different bindings 
  166. and behavior in each. The mode display not only shows the current mode, 
  167. but also implements a popup menu allowing you to change the current mode 
  168. for the window.
  169.  
  170. ==============================================================================
  171. = Marks
  172. ==============================================================================
  173.  
  174.  
  175. Alpha allows the user to use "marks" to remember positions in files. Marks 
  176. "float". That is, if a mark is initially at position 312 and then five 
  177. characters are inserted at location 297, the mark's new value will be 317. 
  178. Alpha uses three different types of marks. 
  179.  
  180. The first is generically referred to as "the mark". The mark is set to the 
  181. current insertion point by the command 'setMark' (command-space by 
  182. default). The position in the file indicated by the blinking cursor is 
  183. referred to as the current insertion point. Many commands (such as "cut" 
  184. and "copy") can operate either on the currently selected (hilighted) text, 
  185. or the text between the current insertion point and "the mark". For 
  186. example, if you move the cursor to the beginning of the work "allybaba", 
  187. hit command-space (the status bar should say "Mark set"), move to the end 
  188. of the word and hit option-w (the status bar should say "Region copied"), 
  189. the effect is the same as if you had used the mouse to select the text and 
  190. then selected the "Copy" command from the "Edit" menu.
  191.  
  192. The second type of mark are the permanent marks. Permanent marks are set, 
  193. removed, and moved-to through the three corresponding menu items in the 
  194. "Search" menu. Permanent marks differ from the generic mark in that they 
  195. have names, there can be any number of them, and they are saved in the 
  196. resource fork if the file is subsequently saved.
  197.  
  198. The third type of mark is the temporary mark. Like permanent marks, 
  199. temporary marks can be named and there can be any number of them. Unlike 
  200. permanent marks, temporary marks do not "dirty" the file, and they aren't 
  201. saved. So far, temporary marks are used exclusively to implement higher 
  202. order functions in TCL procedures. In the 5.0 release, temporary marks are 
  203. used to implement a "mark stack" and a for loop template.
  204.  
  205. At the time a file is saved, the marks for that file are stored into the 
  206. file's resource fork in an order determined by the variable 
  207. 'markSorting'. The choices are either 0 (no sorting), 1 (sort by file 
  208. position), or 2 (sort alphabetically).
  209.  
  210.  
  211. ==============================================================================
  212. = The Mark Stack
  213. ==============================================================================
  214.  
  215. The mark stack is a last-in-first-out (LIFO) stack of temporary marks 
  216. managed by the TCL procedures 'pushMark' and 'popMark'. 'pushMark' creates 
  217. a new temporary mark of the current insertion point and adds it on to the 
  218. top of the stack. 'popMark' removes the top mark from the stack and goes 
  219. toit. A typical use of the mark stack is a 'pushMark' at the current 
  220. position, go look somewhere else in the file, and then 'popMark' to get 
  221. back to where you were. However, the stack is recursive, so there can be 
  222. any number of 'pushMarks' before the marks start to be popped back off the 
  223. stack.
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248. ==============================================================================
  249. = Templates
  250. ==============================================================================
  251.  
  252. Temporary marks can also be used to with language construct templates. The 
  253. file "template.tcl" contains an example implementing a template for C's 
  254. 'for' command. Depressing control-i will insert a template for the "for" 
  255. command into the current window. Five temporary marks are defined in the 
  256. for structure, three inside the parenthesis, one where the "for" body text 
  257. will be inserted, and one after outside the for body entirely. Depressing 
  258. control-shift-i moves the cursor to the next of the five temporary marks 
  259. allowing quick entry of the entire command.
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285. ==============================================================================
  286. = The Tool Command Language (TCL)
  287. ==============================================================================
  288.  
  289. See the Tcl manual page under the 'Help' menu for a complete description of 
  290. Tcl, the Tcl shell, and it's commands. Each of the Tcl commands and several 
  291. sections have a mark defined, so you can use the "Mark" titlebar menu to 
  292. navigate through the manual page. 
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322. ==============================================================================
  323. = Key Bindings
  324. ==============================================================================
  325.  
  326.  
  327. Any TCL command can be bound to any single keystroke. One way to bind a 
  328. function is with a statement such as:
  329.   
  330.       bind 'c' <modifier string> funcName [<mode>]
  331.           
  332. where c is a character, <modifier string> is an optional string containing 
  333. one or more of:
  334.  
  335.       c   - command modifier
  336.       o   - option modifier
  337.       s   - shift modifier
  338.       z   - control modifier
  339.       e   - escape modifier      
  340.  
  341. Additionally, the modifier string can contain a capital letter specifying 
  342. that the binding is only activated if preceded by control and the lowercase 
  343. version of that letter. This feature allows multiple-key combinations ala 
  344. Emacs. The following line binds cmd-shift-f to the function 'forwardChar': 
  345.  
  346.  bind 'f' <cs> forwardChar 
  347.  
  348. The next line would bind the same function to C-x C-f: 
  349.  
  350.  bind 'f' <cX> forwardChar 
  351.  
  352. 'mode' is an optional parameter that specifies, when present, that the 
  353. binding is only active in a given mode, where the current mode is the 
  354. parameter to the last call of 'displayMode' (look in "procs.tcl"). Note 
  355. that given a general binding (no mode specification) and a binding specific 
  356. to the current mode, the last binding to have been created is the one found 
  357. first. 
  358.  
  359. Additionally, most keyboards have keypads and/or Function Keys. These 
  360. keys can be bound using case-insensitive numeric labels using the same 
  361. bind command as above, with the label replacing the character. For 
  362. example, to bind F1 to function 'funcName', the following would work:
  363.  
  364.     bind F1 funcName
  365.  
  366. As above, the binding can include a modifier string. The following labels 
  367. are defined for US keyboards:
  368.  
  369.   Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 Help Home Pgup Del 
  370.   End Pgdn Left Right Up Down Clear Kpad0 Kpad1 Kpad2 Kpad3 Kpad4 Kpad5
  371.   Kpad6 Kpad7 Kpad8 Kpad9 Kpad= Kpad/ Kpad* Kpad- Kpad+ Enter Kpad.
  372.  
  373. The function 'listBindings' will list all of the bindings currently in 
  374. effect in a format suitable for re-loading.
  375.  
  376. The above labels may not be sufficient for all keyboards (attention 
  377. international users). If a hex number is used instead of a character inside 
  378. the single quotes, the binding is done to key codes instead of ascii 
  379. values. The following is a key code version of the same binding: 
  380.  
  381.       bind 0x03 <cs> forwardChar
  382.  
  383. The key code for any given key can be obtained by using the 'keyCode' 
  384. function. 
  385.  
  386. Also, there is an alternate form that allows the specification of an 
  387. ascii code directly:
  388.  
  389.     ascii 0x20 <z> setMark
  390.     
  391. Binds control-space to 'setMark'.
  392.  
  393. Note that menu item command equivalents take precedence over bindings, 
  394. and that the 'bind' command does not affect the command equivalents 
  395. displayed in the menus. Command equivalents can only be changed by using
  396. an external tool like 'ResEdit'. Also note that key code bindings take 
  397. precedence over ascii bindings. 
  398.  
  399.  
  400. ==============================================================================
  401. = Menus
  402. ==============================================================================
  403.  
  404. Alpha's menus are completely reconfigurable. Some of the menu items are 
  405. internal alpha commands, while others are Tcl procs defined in one of the 
  406. files of the "Tcl" subdirectory. Most of these procs are defined in 
  407. "procs.tcl". The following is an explanation of the default menus. The 
  408. explanations of items that are defined as Tcl procs are implemented by the 
  409. Tcl proc specified by "(proc <name>)", and can be found in one of the .tcl 
  410. files. All others are internal functions. 
  411.  
  412. File
  413.     New                      New file.
  414.     Open…                   Open file.
  415.     Open Selection           Extend the current selection w/ a ".h" suffix and try 
  416.                             to open the file named by the resulting selection. The file is 
  417.                             looked for in the directories named by 'includePath'. 
  418.                             (proc openSelection)
  419.     Close                   Close file.
  420.     Save                       Save file.
  421.     SaveAs…                   Prompt for name to same file under.
  422.     Revert                   Revert to last saved version, throw away undo history. 
  423.     Shell                   Start up command-line shell that interprets Tcl commands. The 
  424.                             shell has a few csh-type features, such as 'ls', 'rm', etc. 
  425.                             commands, as well as file completion with the TAB key. 
  426.     Page Setup…               Set print options.
  427.     Print…                  Print file.
  428.     Quit                       Quit Alpha.
  429.  
  430. Edit
  431.     Undo                    Undo. 
  432.     Redo                    Redo. 
  433.     Load Window
  434.     Load Selection            Execute either the window or the selection as Tcl source. 
  435.     Cut                        Cut selection to scrap.
  436.     Copy                    Copy selection to scrap.
  437.     Paste                    Paste from scrap.
  438.     Yank                    Paste last deleted text. Concatenates together consecutive, 
  439.                             adjoining deletions.
  440.     Select All                Select entire file.
  441.     Clear                    Delete selection.
  442.     Shift Left                Shift selection left one tab.
  443.     Shift Right                Shift selection right one tab.
  444.     Balance                    Select text out to the next set of matching braces.
  445.     Hilite                    Select text between current insertion and the generic "mark". 
  446.                             Or, if there is already a selection, unselect the text, place
  447.                             the insertion at the beginning of the unselection, and place the 
  448.                             "mark" at the end of the unselection. The function 
  449.                             'exchangePointAndMark' (by default mapped to the "5" on the keypad) 
  450.                             exchanges the character positions of the insertion and the "mark".
  451.     
  452. Search
  453.     Find..                    Present a search dialog.
  454.     Repeat Search Forward    Search forward again w/ same settings.
  455.     Repeat Search Backward    Search backward again w/ same settings.
  456.     Find in Next File        Restart multiple-file search in next file after 
  457.                             stopping at a match.
  458.     Enter Selection            Make the current selection the text to be searched for.
  459.     Replace                    Replace the selection.
  460.     Replace and Find Again.    Replace the selection and search again forward.
  461.     Replace All                Replace all of occurances of the search string in the rest 
  462.                             of the file.
  463.     Goto Line…                Go to specific line.
  464.     Set Mark…                Set permanent named mark.
  465.     Goto Mark…                Goto permanent named mark.
  466.     Remove Mark…            Remove permanent named mark.
  467.     
  468. Utils
  469.     Short Menus                Remove some menus and menu items (proc shortMenus).
  470.     Flags                    A submenu of Tcl flags to be turned on and off. Look under 
  471.                             "Variables" for explanations of individual flags (proc editFlag).
  472.     Vars                    Same as Flags, except these variables may be arbitrary integers 
  473.                             or strings (proc editVar).
  474.     File Utils
  475.         Insert File…        Insert the text of another file.
  476.         Remove File…        Remove a file.
  477.         File Info…            Display/edit info about a file.
  478.         Word Count            Count lines, words, chars in window (proc wordCount).
  479.     FileSets                Submenu allowing the "current" fileset to be specified. A 
  480.                             fileset is a list of files used by various Alpha functions.
  481.                             (proc changeFileSet).
  482.     Add File Set            Create a fileset on the fly. (proc addFileSet)
  483.     Execute                    Quick way to execute a Tcl command. TAB implements command
  484.                             completion. 
  485.     Push Mark                Push onto a Last-In-First-Out stack of temporary marks (proc 
  486.                             pushMark).
  487.     Pop Mark                Pop from LIFO stack (proc popMark).
  488.     Prev Func                Use the value of 'funcExpr' to search for the previous 
  489.                             function definition (proc prevFunc).
  490.     Next Func                Use the value of 'funcExpr' to search for the next
  491.                             function definition (proc nextFunc).
  492.     Start Keyboard Macro    Start recording actions for later replay.
  493.     End Keyboard Macro        Stop recording actions.
  494.     Execute Keyboard Macro    Re-execute recorded actions.
  495.     Dump keyboard Macro…    Name and insert a Tcl proc implementing the last 
  496.                             recorded sequence of actions.
  497.     
  498. Misc
  499.     List Bindings            Create a new file containing all current key bindings.
  500.     Describe Binding…        Wait for a keystroke, then display that keystroke's binding.
  501.     Insert Path Name…        Prompt for a directory and insert result.
  502.     Set Font Tabs…            Change font and/or tabs for current file.
  503.     Copy Named Clipboard…    Copy selection to user-named clipboard.
  504.     Cut Named Clipboard…    Cut selection to user-named clipboard.
  505.     Paste Named Clipboard…    Paste from user-named clipboard.
  506.     Ascii Etc
  507.         Key Code…            Wait for key press and insert keycode and modifier string 
  508.                             suitable for key binding.
  509.         Key Ascii…            Same as above, but use ascii form.
  510.         Get Ascii…            Display ascii code for char to right of insertion.
  511.         Insert Ascii…        Prompt for ascii code and insert character.
  512.     Modes                    Set different modes.
  513.     Switch To                Bring other apps to front.
  514.     Mpw Shell                Start a window that sends 'DOSC' events to Apple's 
  515.                             toolserver. 
  516.     Load Electric Alias        Load David Black's 'electricAlias' package. See the 
  517.                             "Help" menu for more details (proc loadElectricAlias).
  518.     
  519.  
  520. Convert
  521.     Fill Region                "Fill" selection subject to 'leftFillColumn' and 
  522.                             'fillColumn', (proc fillRegion).
  523.     Fill Paragraph            "Fill" paragraph that contains the insertion (proc 
  524.                             fillParagraph).
  525.     Wrap Region                Break lines longer than 'fillColumn' in selection 
  526.                             (proc wrapRegion).
  527.     Wrap Paragraph            Break lines longer than 'fillColumn' in paragraph 
  528.                             containing insertion pt (proc wrapParagraph).
  529.     Sort Lines                Sort selected lines (proc sortLines).
  530.     Matching Lines            Grab all lines from current position on that match a 
  531.                             regular expression and dump in new buffer (proc matchingLines). 
  532.     Zap Invisibles            Delete all chars in file w/ ASCII code < 32, except for 
  533.                             LF, TAB and CR.
  534.     Tabs To Spaces            Convert tabs to space runs.
  535.     Spaces To Tabs            Convert space runs to tabs.
  536.     Strings
  537.         Insert Prefix        Prepend string 'prefixString' to every line in selection 
  538.                             (proc insertPrefix).
  539.         Insert Suffix        Append string 'suffixString' to every line in selection 
  540.                             (proc insertSuffix).
  541.         Remove Prefix        Remove prefix string from lines in selection 
  542.                             (proc removePrefix). 
  543.         Remove Suffix        Remove suffix string from lines in selection 
  544.                             (proc removeSuffix). 
  545.         Set Prefix…            Change prefix string (proc setPrefix).
  546.         Set Suffix…            Change suffix string (proc setSuffix).
  547.     Colors
  548.         Fore Color…            Set foreground color.
  549.         Back Color…            Set background color.
  550.         Dump Colors            Dump tcl script to set current colors.
  551.     Paragraph To Line        Convert paragraph to single long line, useful for 
  552.                             exporting text to word processors (proc paragraphToLine).
  553.     Line To Paragraph        Convert long line to paragraph, useful for importing 
  554.                             text from word processors (proc lineToParagraph).
  555.                             
  556. Help
  557.     Edit help files (proc helpMenu).
  558.     
  559. Wins
  560.     Arrange                    Rearrange open windows.
  561.     Zoom                    Zoom windows in and out.
  562.     Iconify                    Replace window w/ small icon (proc iconify).
  563.     Next Window                Select next window (proc nextWindow).
  564.     Swap With Next            Swap topmost two windows (proc swapWithNext).
  565.     Choose A Window            Choose window to select from list (proc chooseAWindow).
  566.     Prev Window                Select previous window (proc prevWindow).
  567.     Close All                Close all windows (proc closeAll).
  568.     Save All                Save all dirty windows (proc saveAll).
  569.  
  570.     
  571.     
  572. ==============================================================================
  573. = User-Defined Menus
  574. ==============================================================================
  575.  
  576. Every one of Alpha's menus is defined in the initialization files that 
  577. Alpha loads on startups. All can be altered or discarded at well. Alpha's 
  578. menu commands allow the the user to build custom menus which contain names of 
  579. functions, macros, or arbitary TCL commands that just HAVE to be in the 
  580. menus, as opposed to being merely callable through the bindings. The 
  581. syntax is dead simple. Menus can be nested, allowing heirachical menus to 
  582. be defined. See the 'AlphaBits.tcl' file for examples (only the first 
  583. three Alpha menus are hard-coded into the Application, the others are set 
  584. up through the AlphaBits file). The following meta characters can be 
  585. embedded in the strings:
  586.  
  587.    Meta-character     Usage
  588.    --------------     -----
  589.  
  590.     ; or Return       Separates multiple items.
  591.     ^                 Followed by an icon number, adds 
  592.                       that icon to the item.
  593.     !                 Followed by a character, marks the
  594.                       item with that character.
  595.     <                 Followed by B, I, U, O, or S, sets 
  596.                       the character style of the item.
  597.     /                 Followed by a character, sets up
  598.                       a keyboard equivalent.
  599.     (                 Disables the item.
  600.  
  601. The menu creation syntax is :
  602.  
  603.     menu <-n name> [-p procName] [-m] "Tcl list of items"
  604.  
  605. Where the arguments have the followings meanings:
  606.   '-n <name>'    Name of menu.
  607.   '-m'            No menu form. If not supplied, each menu item is split into 
  608.                   words at each capitalized letter.
  609.   '-p <pname>'     Rather that having alpha call a Tcl proc named by the menu 
  610.                   item's text, this option tells Alpha to call the tcl proc named by 
  611.                   'pname' with two arguments: the menu name, and the text of the menu 
  612.                   item chosen.
  613.  
  614. Once the menus are created, they can be inserted and  deleted from the 
  615. menu bar by the syntax:
  616.  
  617.    insertMenu "name"
  618.    deleteMenu "name"
  619.  
  620. as well as through macros.
  621.  
  622.  
  623. As alluded to above, Alpha attempts to make procedure names readable in the 
  624. menus by separating words at any capitalized letter. For example, 
  625. 'findFile' becomes "Find File". This function is turned off by the '-m' 
  626. option. 
  627.  
  628. Menu items can be enabled and disabled through the TCL command 
  629. 'enableMenuItem'. Menu items checkmarks can be turned on and off via 
  630. 'markMenuItem'. Menu items can be appended via 'addMenuItem' and deleted 
  631. via 'deleteMenuItem'. See the "Alpha Tcl Extensions" help file for syntax. 
  632.  
  633. If an ellipsis ('…') is the last character in a menu item, it is stripped 
  634. off before searching for the function corresponding to the chosen item. 
  635.  
  636.  
  637. ==============================================================================
  638. = Event Hooks
  639. ==============================================================================
  640.  
  641.  
  642. Alpha calls the TCL procs "openHook", "saveasHook", "closeHook", 
  643. "activateHook", "deactivateHook", "suspendHook", and "resumeHook" when the 
  644. corresponding events occur. With the exception of "saveasHook", the proc 
  645. are all called with the complete pathname as the sole argument. 
  646. "saveasHook" is called with the old pathname as the first argument and the 
  647. new pathname as the second argument. Default implementations for these 
  648. commands are in the file 'proc.tcl'. These commands can be modified to 
  649. perform arbitrary commands, including saving of files, implementation of 
  650. per-window variables, etc. 
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678. ==============================================================================
  679. = Searching
  680. ==============================================================================
  681.  
  682.  
  683. ALPHA has a full repertoire of searching commands. The 'find' command 
  684. brings up a dialog allowing the search and replacement text to be 
  685. specified. The dialog also allows 'Forward', 'Ignore Case', 'Reg Expr', and 
  686. 'Word Match' options to be set. These options can be toggled via the 
  687. keyboard by clover-<first letter of option>. For example, clover-w toggles 
  688. the 'Word Match' option. The 'Mult Files' option tells Alpha to search 
  689. through all files in a given file set. Filesets can be specified in 
  690. 'procs.tcl' (see the section on filesets) or on the fly, via the 
  691. "Add Fileset…" item of the "Utils" menu. 
  692.  
  693. And finally, Alpha allows a library of useful search and replace texts to 
  694. be defined as a tcl list of lists (each sublist containing a name, search 
  695. text, and replacement text). This list, the 'patternLibrary' variable 
  696. defined at the end of 'procs.tcl', is used to create a popup menu in the 
  697. find dialog allowing these patterns to be easily entered.
  698.  
  699. Once the text and options have been set, the 'Search' menu contains several 
  700. commands for repeated searching, replacing, etc. 
  701.  
  702. ==============================================================================
  703. ==== Regular Expressions
  704. ==============================================================================
  705.  
  706. If the variable 'regExpr' is true, the search functions interpret the 
  707. search text as regular expressions, which have the following elements:
  708.  
  709.  c        literal char.
  710.  ^        beginning of line.
  711.  $        end of line.
  712.  .        any character except carriage return.
  713.  [...]    character class, can use ranges such as '0-9'.
  714.           inside classes. Matches one character of the 
  715.           enclosed choices. Ex: '[ac0-2]' matches 'a', 
  716.           'c', '0', '1', or '2'.
  717.  [^...]   negated character class, matches anything but
  718.           the enclosed characters. ']' can be included
  719.           by putting it immediately after the '^'.
  720.  \t       tab.
  721.  \r       carriage return or line break.
  722.  *        zero or more occurrences of the previous
  723.           pattern. Ex: 'ab*' matches 'a', 'ab', 'abb',
  724.           'abbb' etc.
  725.  +        one or more occurrences of the previous 
  726.           pattern. 
  727.  ?        zero or one occurrences of the previous 
  728.           pattern. Ex: 'ab?' matches 'a' or 'ab'.
  729.  a|b      matches either a or b. If enclosed in
  730.           parenthesis, the extent of the alternated
  731.           expressions is limited. Ex: (pete|bob) 
  732.           matches either 'pete' or 'bob'.
  733.  (...)    The interior elements are grouped together. 
  734.  
  735. Regular expressions constructed from the above elements can be 
  736. concatenated to create larger expressions. 
  737.  
  738. The parenthesis also define substrings of the total matched string that 
  739. can be used either later during substitution. The substring delimited by 
  740. the pair of parenthesis that includes the nth left paren is denoted \n, 
  741. where n is 1, 2, .... 9.  '\0' and '&' both refer to the matched text.
  742.  
  743. EXAMPLE: 
  744. The following regular expression will match either 'aabox' or 'bbbox':
  745.  
  746.               (aa|bb)box
  747.  
  748. Regular expressions can be very difficult to master, but they the 
  749. following section shows how useful they can be.
  750.  
  751. The text used in searches and replaces can be accessed through the alpha 
  752. variables 'searchStr' and 'replaceStr'.
  753.  
  754.  
  755. ==============================================================================
  756. = Incremental Searches
  757. ==============================================================================
  758.  
  759. Emacs users will be happy that both forward and backward incremental 
  760. searches are implemented. Incremental searches bypass the normal search 
  761. dialog and search for the current text after each keystroke. The result is 
  762. often much faster and less intrusive. Executing either while an incremental 
  763. search is in progress causes the search to proceed to the next instance of 
  764. the current text. Incremental search mode is exited when any other command 
  765. (executed through the menus or through bindings that include at least one of 
  766. the control key and the option key) is executed, or when the escape or 
  767. delete key is used. 
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793. ==============================================================================
  794. = 'C' Tags
  795. ==============================================================================
  796.  
  797.  
  798. ALPHA supports the use of tags to find declarations of functions. When 
  799. searching for a tag, ALPHA looks for the tag file specified by the 
  800. "tagFile" string variable. ALPHA's tag generating routines use the regular 
  801. expression in the string variable "funcExpr" to look for function 
  802. declarations. In other words, we don't parse the text. If you declare your 
  803. functions differently, you can change " funcExpr" to suit your own style. 
  804. Alpha currently uses the following regular expression to find C function 
  805. declarations:
  806.  
  807.               ^[^ \t#\r/@][^\r]*\([^\r]*\)$
  808.  
  809. (NOTE: the above expressions won't pick up many C++ method definitions. To 
  810. pick them up, add a question mark '?' after the last right parenthesis.) 
  811. Although complicated, this expression makes sense if you slowly wade 
  812. through it. The string that we are looking for must take up an entire 
  813. line. It must begin with a character other than '\t', '#', '\r', '/', ' ', 
  814. or '@'. There must be a set of parenthesis.   
  815.  
  816. Note that not only can you customize this to your style of 'C' 
  817. declarations, you could also use it to generate tags for other languages. 
  818. The only thing you need to bear in mind is that the tag routines use the 
  819. complete word previous to the first '(' in the selected line as the 
  820. function's name. If there is no '(' in the selected line, the last word in 
  821. the line is used. Therefore, Pascal procedures w/ or w/o parameters can be 
  822. identified.
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830. ==============================================================================
  831. = "Fill" Routines
  832. ==============================================================================
  833.  
  834.  
  835. The "fill" and "wrap" routines reformat text to specified line lengths. 
  836. This is useful in two case. First, word processors such as Microsoft Word 
  837. only insert carriage returns at the end of paragraphs. Secondly, while 
  838. typing and inserting text into pre-existing paragraphs, the line lengths 
  839. become unequal. 
  840.  
  841. The "wrap" routine handles word processor documents quickly by merely 
  842. inserting carriage returns as necessary to ensure all lines in the 
  843. selected region are shorter than specified by the variable 'fillColumn'. 
  844. Alpha asks the user if wrapping should be done whenever the user opens 
  845. files that have lines longer than 'paraColumn' characters.
  846.  
  847. The TCL routines 'fillRegion' and 'fillParagraph' go further. Not only do 
  848. they break lines, but they also coalesce lines to eliminate short lines. 
  849. Both routines work by stripping the relevent text of white space, then 
  850. re-inserting white space and carriage returns so that no line extends past 
  851. 'fillColumn' characters in length and begins with 'leftFillColumn' spaces 
  852. characters. Both routines are implemented in the file 'procs.tcl', and 
  853. therefore different definitions of paragraphs can be accomodated by 
  854. modifying the appropriate TCL procedures.
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868. ==============================================================================
  869. = Titlebar Menus
  870. ==============================================================================
  871.  
  872.  
  873. If the value of the variable 'showMenuHeads' is non-zero, every text window 
  874. contains two boxes in the title bar. By default, the first contains 
  875. subboxes entitled "Func" and, "Mark". Depressing the mouse in these boxes 
  876. bring up popup menus (Note, however, that there might only be one subbox, 
  877. see below).
  878.  
  879. The "Func" menu uses the regular expression defined by the string variable 
  880. 'funcExpr' to create a popup menu containing a sorted list of all function 
  881. definitions in the current file. Using regular expressions this way is not 
  882. going to pick up all function definitions if your coding style is very 
  883. different than what Alpha expects. If this is the case, you may need to 
  884. play with the definition for 'funcExpr'.
  885.  
  886. Selecting an item from this menu immediately displays the definition of 
  887. that function. If the 'shift' key is depressed when the menu is created, 
  888. the methods menu is not sorted. The 'sortedIsDefault' var reverses these 
  889. semantics.
  890.  
  891. The "Mark" menu displays a list of all permanent marks in the current 
  892. file. Selecting an item from the menu causes the insertion to be placed at 
  893. the corresponding mark.
  894.  
  895. The behavior of the function menu can be changed dramatically by the user. 
  896. The method-func routine uses 'funcExpr' to locate a line containing a C 
  897. definition, and then another routine extracts the function name. 
  898.  
  899. If the variable 'funcTitle' is set to "Func", the label of the menu is 
  900. "Func" and for each match found, a menu item is created with the text of 
  901. the last word before the first left parenthesis in the match. For example, 
  902. if the following is matched text: 
  903.  
  904.     this is matched text (one (silly))
  905.  
  906. the word 'text' would be inserted into the popup menu as an item.
  907.  
  908. If 'funcTitle' is set to a string other than "Func", two things happen. 
  909. First, the contents of 'funcTitle' are used as the label for the func popup 
  910. box. Second, Alpha adds a menu item constructed from the text inside the 
  911. 'funcPar'th parenthesized expression in the match, where 'funcPar' is an 
  912. Alpha variable of the same name. Note that the parenthesis in this case are 
  913. part of the regular expression, the actual text may not have parenthesis at 
  914. all, and probably doesn't. For more information on this, look at the manual 
  915. page for regular expressions (in the "Help" menu). 
  916.  
  917. See the startup files for examples of both methods.
  918.  
  919. If the window is opened through 'edit' or 'fileMenu' and has the '-m' 
  920. option set, the mark menu is relabeled to the value of 'markLabel' and the 
  921. other menu is removed entirely. This is mainly used for help files. 
  922.  
  923. And finally, the system interprets the following characters (see the 
  924. section describing how to create menus): ';', '^', '!', '<', '/', and 
  925. '('. These characters will be changed to periods in the titlebar menus. 
  926.  
  927. The function menu is limited to 150 items.
  928.  
  929.  
  930. ==============================================================================
  931. = Word Breaking
  932. ==============================================================================
  933.  
  934. Alpha allows you to redefine it's internal notion of what a word is, 
  935. through the variables 'wordBreak', and 'wordBreakPreface'. 'wordBreak' is 
  936. set to a regular expression that defines a word to you. 'wordBreakPreface' 
  937. should be a regular expression that matches exactly one of any characters 
  938. that are not in your word definition. 
  939.  
  940. For instance, the default definition of 'wordBreak' is '[a-zA-Z0-9_]+'. 
  941. This matches any contiguous sequence of contiguous alphanumeric 
  942. characters, plus underscore.
  943.  
  944. The default value for wordBreakPreface is '[^a-zA-Z0-9_]', basically just 
  945. the negation of any any of the characters in your 'wordBreak' definition. 
  946.  
  947. The need for both these variables in backward searches can be seen as 
  948. follows. Suppose your window's text is "hey hello", and the current 
  949. insertion is between the two 'l's. Now, searching backwards for the above 
  950. 'wordBreak' definition will take the insertion to between the 'e' and the 
  951. first 'l', not really where we want to say is the start of the word. By 
  952. contrast, if we search backwards for 'wordBreak' and 'wordBreakPreface' 
  953. concatenated together, and then move forward one character after a 
  954. successful search, we end up right before the 'h' in 'hello', just where 
  955. we want to be.
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971. ==============================================================================
  972. = Defining and Using File Sets
  973. ==============================================================================
  974.  
  975. File Sets are lists of files that Alpha uses for multiple-file searches and 
  976. tag searches, among other things. Typically, a user will set up several 
  977. different file sets in the AlphaBits.tcl file, perhaps one specifying all 
  978. the source files in a project, another specifying all the Mac include 
  979. files, and another specifying all the UNIX include files. When a command 
  980. using file sets is initiated, Alpha evaluates the command "getCurrFileSet", 
  981. which returns a list of complete pathnames to search. Some of the lists are 
  982. set up explicitly (see the 'noGlobNecessary' definition in "procs.tcl"), 
  983. while other file sets are defined at startup time through the use of file 
  984. globbing. See the TCL manual page for a definition of "glob"ing. The 
  985. definition of the variable "globNecessary" in "procs.tcl" shows how to to 
  986. this. 
  987.  
  988. Functions that use file sets operate on the "current" fileset, which is 
  989. specified by the 'fileSet' variable. The current file set can also be 
  990. switched by using  the "File Set" heirarchical menu. 
  991.  
  992.  
  993. 5.02 includes a new Tcl proc 'addFileset', which allows a fileset to be 
  994. created on the fly. This 
  995. fileset remains usable until Alpha is restarted. It should be quite simple 
  996. to use Tcl to make this new fileset permanent. A Tcl proc could also be 
  997. written to create a heirarchical menus that has a submenu for each fileset, 
  998. the items of each submenu being the files for that fileset. However, I'm 
  999. not going to write everything... 
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014. =============================================================================
  1015. = Keyboard Macros
  1016. =============================================================================
  1017.  
  1018.  
  1019. Defining and Using Keyboard Macros ALPHA supports keyboard macros which 
  1020. record a sequence of keystrokes to be played back later w/ the function 
  1021. 'executeKeyboardMacro' (this function is also in the 'Utilities' menu) or 
  1022. written into a buffer by selecting 'Dump Macro' from the 'Utilities' menu. 
  1023. The dump function prompts you for a macro name, which must consist only of 
  1024. letters of the alphabet, digits, and '_'. 
  1025.  
  1026. These macro declarations can then be edited, loaded, and bound to 
  1027. keystrokes. Loading a macro or a binding is accomplished by hiliting the 
  1028. text and selecting the "Load Selection" item of the 'Customize' window. If 
  1029. no text is hilited, the entire window is loaded by the same command. 
  1030. Macros can be bound to keys in exactly the same manner as functions (see 
  1031. above). 
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051. =============================================================================
  1052. = Undo + Redo
  1053. =============================================================================
  1054.  
  1055.  
  1056. ALPHA supports unlimited undo and redo. This means that most changes can 
  1057. be undone, and then redone, at will. Bear in mind that once you create new 
  1058. modifications, all changes that you have undone but not redone are lost. 
  1059. Another point to bear in mind is that saving a buffer to disk currently 
  1060. flushes the undo buffer. 
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088. =============================================================================
  1089. = Using Think C
  1090. =============================================================================
  1091.  
  1092.  
  1093. Closed environments like Think present problems to the developer using 
  1094. other tools. However, the following tips should help:
  1095.  
  1096. • After editing with Alpha, hit the 'Use Disk' button from the 'Build' 
  1097. menu item to force Think to check modification times for a build.
  1098.  
  1099. • Move all your project source files into a single directory. Then insert 
  1100. a new entry into the 'noGlobNecessary' section of file "procs.tcl" w/ 
  1101. file pattern *.c.
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125. =============================================================================
  1126. = Rectangular Editing
  1127. =============================================================================
  1128.  
  1129.  
  1130. If the option key is pressed while the mouse is dragged,  a rectangular 
  1131. section of text is selected instead of the normal selection. This 
  1132. rectangular selection may extend over multiple lines, but contains only 
  1133. text between the column of the drag start and the column of the drag end. 
  1134. The drag cannot end on a column or row less than the start. This selection 
  1135. can be extended by option-shift-mouse, but not dragged further.
  1136.  
  1137. The rectangular selection can be deleted, copied, and pasted. This is very 
  1138. useful for tables and arrays, such as in LaTeX. Usually, the operation 
  1139. will be intuitive. However, if you use proportional fonts the selection 
  1140. may appear ragged. If some of the line contain tabs, the result may not be 
  1141. want you want. Converting tabs to spaces in the desired region before 
  1142. attempting rectangular selection usually fixes the problems. 
  1143.  
  1144. The most natural semantics of rectangular selection aren't obvious. I 
  1145. chose to implement it in a similar fashion to that of Microsoft Word. 
  1146. Preditor does it in another way, and has many bugs (and it's  commercial, 
  1147. hah!).
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162. =============================================================================
  1163. = Using LaTeX
  1164. =============================================================================
  1165.  
  1166.  
  1167. As I am starting to write papers on my Mac using OzTeX, Alpha may migrate 
  1168. increasingly into the realm of LaTeX users. For starters, LaTeX support 
  1169. includes:
  1170.  
  1171. • automatic word-wrapping.
  1172. • fill paragraph and fill region commands.
  1173. • support for changing paragraph definitions 
  1174.    so that a backslash limits paragraph extent.
  1175. • rectangular editing mode, useful for working
  1176.    with tables and arrays.
  1177. • title-bar section menu.
  1178. • suffix hook for .tex (see the section on suffix 
  1179.    hooks) that can automatically enable all this.
  1180.  
  1181. The only one of the above items that hasn't been explained is the 
  1182. title-bar section menu, which is specified by appropriate settings of 
  1183. 'funcExpr', funcTitle', and 'funcPar'. For files ending in ".tex", the 
  1184. title-bar contains a box labeled "Sect". Clicking on this box creates a 
  1185. popup menu containg all section definitions in the current file. Selecting 
  1186. one puts the cursor at the beginning of the section. See the Popup Menus 
  1187. section and the startup files for more information.
  1188.  
  1189. In addition, distributions from 5.0 on include a ``latex.tcl'' file that 
  1190. has many useful latex'ing macros. Finally, 
  1191. "public/Alpha/contrib/smart.tcl" on cs.rice.edu contains macros that 
  1192. implement smart quotes.
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201. =============================================================================
  1202. = The (Dreaded) Option Key
  1203. =============================================================================
  1204.  
  1205.  
  1206. ALPHA's default setup uses the command key like any other mac application. 
  1207. Problems arise in ALPHA's emulation of emacs key bindings. Emacs uses an 
  1208. escape key and a control key.  Alpha's default configuration is set up for 
  1209. Mac II's. Emacs's escape and control keys are emulated by the Mac's 
  1210. corresponding keys. For Mac+'s, however, the situation is much more 
  1211. complicated. They don't have an escape key, so the the backquote key, '`', 
  1212. must be used instead. This can be set up by uncommenting the appropriate 
  1213. line in the "AlphaBits.tcl" file. Also, Mac+'s don't have control keys, so 
  1214. the option key can be used instead.  However....
  1215.  
  1216. Using the option key isn't quite that simple. First, the option key is 
  1217. already used in two contexts. There may be other option bindings. Also, if 
  1218. the variable 'optionIsEscape' is set, the option key is treated as if it 
  1219. is an escape so as to allow single keystroke calls of Alpha functions. In 
  1220. order to use the option key as an escape key, this variable must be set to 
  1221. zero in the AlphaBits file. Also, all the relevant bindings must have 
  1222. their modifier strings changed from using 'z' to 'o'.
  1223.  
  1224. There are other problems. Several option combinations are "dead keys" 
  1225. (option-e, option-o....), they are used to create bizarre (sorry to y'all 
  1226. non-Amuricans) characters through multiple keystrokes. Alpha can fix this 
  1227. by overlaying the system 'KCHR' resource with a private modified resource. 
  1228. This happens at startup time if the "AlphaBits.tcl" file specifies a zero 
  1229. value for the variable 'noRemapOption'. Unfortunately, this is just a US 
  1230. version of the resource, it won't work "fur the non-Amuricans".
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242. =============================================================================
  1243. = System Software 7.0
  1244. =============================================================================
  1245.  
  1246. Alpha is 32-bit clean and high-level event aware. 
  1247.  
  1248. Under 7.0, Alpha uses temporary memory to accommodate large files. This 
  1249. allows you to open multi-megabyte files even when Alpha's partition is set 
  1250. only at 512k, if the system has that much memory available. Note that 
  1251. using temporary memory makes that much memory unavailable to other 
  1252. applications. Contrary to all admonishments, Alpha does not unlock 
  1253. temporary memory across WaitNextEvent calls and may eventually use all the 
  1254. memory in your system. You can turn this feature off through 'tempMem'.
  1255.  
  1256. Note, however, that the clipboard is allocated by the system in Alpha's 
  1257. heap, and therefore cannot take advantage of temporary memory.
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279. =============================================================================
  1280. = Apple Events
  1281. =============================================================================
  1282.  
  1283. Alpha currently only supports only the four required high-level events 
  1284. (OpenApp, OpenDoc, PrintDoc, and QuitApp) and the DoScript ('dosc') 
  1285. event. Alpha accepts two types of parameters for DoScript: 
  1286.     typeChar    - Tcl text to be executed, and
  1287.     typeAlias    - FSSpec of file to be sourced.
  1288. Alpha returns the result of the last Tcl command executed. 
  1289.  
  1290. Alpha can also send 'dosc' Apple Events. See the 'dosc' command in the 
  1291. "Alpha Tcl Extensions" help file. 
  1292.  
  1293. And finally, there are the persistant rumors that Symantec will open up 
  1294. their system to third-party editors. If and when this happens, I'll 
  1295. accommodate their events as soon as they publish them. I am unable to work 
  1296. with MPW as I don't own it, but my understanding is that they do not yet 
  1297. supports "error" apple events, as I hope they eventually will. 
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319. =============================================================================
  1320. = MPW
  1321. =============================================================================
  1322.  
  1323. Alpha's 'dosc' capability (see the function "dosc") can be used to send 
  1324. events to MPW's ToolServer. Using about ten lines of C code and the ~40 
  1325. lines of Tcl code in 'mpw.tcl', I created a pseudo mpw shell (look under 
  1326. the "Misc" menu). This shell uses Alpha's 'dosc' function to package each 
  1327. shell command up into an Apple Event and send it to the ToolServer, which 
  1328. then evaluates the command and returns the result to be displayed in the 
  1329. shell. I'm rather new to Apple Events and the ToolServer, so there are 
  1330. probably a few rough edges. 
  1331.  
  1332. If anyone has extensive docs for ToolServer I'd appreciate looking at them. 
  1333. I only have the application because I am a beta tester for another product 
  1334. that supports ToolServer. I was given the application for the beta testing, 
  1335. but not any docs. And of course, I can *not* give away copies of 
  1336. ToolServer because it is a licensed Apple product.
  1337.  
  1338. Finally, Tom Moertel (thor@vivaldi.psu.edu) has written and provided a set 
  1339. of tools that make life easier while writing code in Alpha for the MPW 
  1340. environment. The tools make extensive use of Apple Events, so you must be 
  1341. using MPW 3.3a or greater. (Earlier versions cannot receive commands via 
  1342. Apple Events.) 
  1343.  
  1344.   With the MPW-Alpha package you can:
  1345.   
  1346.     o  Send TCL commands to Alpha from MPW
  1347.     o  Use MPW 411 from Alpha for instant access to programming help
  1348.     o  Automagically locate source code errors from your last MPW compile
  1349.     o  Use the MPW CDent tool to reformat (grind) C/C++ source code
  1350.        from within Alpha
  1351.  
  1352. This package is available via anonymous ftp from cs.rice.edu.
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369. =============================================================================
  1370. = File Formats
  1371. =============================================================================
  1372.  
  1373.  
  1374. Alpha reads and writes files stored in three (or maybe four) different 
  1375. formats. The three main formats are mac (lines end with a carriage 
  1376. return), unix (lines end with linefeed), and IBM pc (lines end with both 
  1377. carriage return and linefeed. Typical, isn't it?).
  1378.  
  1379. Alpha will transparently read and write all three of these formats. You 
  1380. don't have to do anything special to use different formats, but the 
  1381. 'SaveAs...' dialog allows you to specify the format that a file is written 
  1382. in through the 'Format' button.
  1383.  
  1384. The fourth file format is just a modification of the ordinary mac format. 
  1385. Word processors such as Microsoft Word and MacWrite only put carriage 
  1386. returns at the end of paragraphs, so that they can wrap  the paragraphs on 
  1387. the fly. This is what is referred to as 'paragraph format' in the rest of 
  1388. the help text. Alpha does not transparently convert to and from this 
  1389. format because there are valid reasons why someone might want to edit a 
  1390. paragraph formatted file while not in paragraph mode. 
  1391.  
  1392. Therefore, when Alpha detects reads a paragraph-mode file, it asks the 
  1393. user whether or not to remap it. Files can be mapped back to paragraph 
  1394. mode by setting 'fillColumn' to a very large number and executing 
  1395. 'fillRegion' on the text.
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402.  
  1403.  
  1404.  
  1405.  
  1406. =============================================================================
  1407. = Printing
  1408. =============================================================================
  1409.  
  1410. The current window is printed through the "Page Setup..." and "Print..." 
  1411. File menu items. The variable 'suppressHeader' controls whether a header 
  1412. is printed on each page, 'leftMargin', 'topMargin', and 'bottomMargin' 
  1413. control margins on the printed page.
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443. =============================================================================
  1444. = Tips and other Miscellaneous Diversions...
  1445. =============================================================================
  1446.  
  1447.  
  1448. • When a window is "dirty" (has unsaved changes), a 
  1449.   diamond appears in the title bar and next to the
  1450.   corresponding item in the Windows menu.
  1451.  
  1452. • All dialogs that have editable text can use the Cut, 
  1453.   Copy, and Paste menu command equivalents.
  1454.  
  1455. • In all dialogs, non-editable controls can be selected 
  1456.   by typing Command-<first char of control>. If there 
  1457.   are no editable controls in the dialog, simply typing 
  1458.   the first letter of the desired control suffices.
  1459.  
  1460. • Dirty windows are marked with a diamond in the 
  1461.   window's title bar. The corresponding menu items in 
  1462.   the 'Window' menu will also have a diamond mark next 
  1463.   to it.
  1464.  
  1465. • Set the flag 'undoOn' to 0 in order to speed up long 
  1466.   replace-all and macro modifications.
  1467.  
  1468. • After a piece of text has been yank'd or paste'd, the 
  1469.   'mark' is set to the beginning of the new text and the
  1470.   selection is at the end. 'markHilite' will now hilite 
  1471.   the entire insertion. This is especially useful when
  1472.   moving code. Cut the code, insert at a new position,
  1473.   select the inserted text by selecting "Edit:Hilite", and 
  1474.   then use "Edit:Shift Left" and "Edit: Shift Right" to move
  1475.   the text to the proper indentation.
  1476.  
  1477.  
  1478.  
  1479.  
  1480. ============================================================================== 
  1481. = Alpha's Basic Commands 
  1482. ============================================================================== 
  1483. The following functions are called without any arguments and don't return 
  1484. values. They can be directly bound to keystrokes or put in menus. Menu item 
  1485. "Help:Alpha Tcl Extensions" produces a file that lists additional Alpha 
  1486. functions. Finally, procedures can be written in Tcl, Alpha's extension 
  1487. language. Procedures are explained in the Tcl manual page. 
  1488.  
  1489. • abortEm - aborts whatever is currently happening
  1490. • alphaHelp - display Alpha help.
  1491. • backColor - set background color
  1492. • backwardCharSelect - extends selection one char back
  1493. • backwardChar - moves insertion one char back
  1494. • backwardDeleteWord - deletes previous word
  1495. • backwardWord - moves insertion one char back
  1496. • balance - selects smallest set of parens, braces, or 
  1497.   brackets that encloses the current selection
  1498. • beginningBufferSelect - extend selection to the 
  1499.   beginning of the buffer
  1500. • beginningLineSelect - extend selection to the 
  1501.   beginning of the line
  1502. • beginningOfBuffer - move insertion to the beginning 
  1503.   of the buffer
  1504. • beginningOfLine - move insertion to the beginning of 
  1505.   the line
  1506. • capitalizeRegion - capitalize all words in selected 
  1507.   region 
  1508. • capitalizeWord - capitalize word
  1509. • centerRedraw - redraw window with current line in 
  1510.   the middle.
  1511. • clear - clear selected text
  1512. • closeAll - close all windows
  1513. • copy - copy region
  1514. • createTagFile - searches all files in current file set 
  1515.   and saves the locations of any function declarations
  1516.   in a file called 'cTAGS'.
  1517. • currentPosition - displays current and total bytes.
  1518. • cut - deletes and saves region
  1519. • deleteChar - delete char AFTER cursor
  1520. • deleteSelection - delete current position, don't save
  1521. • deleteWord - delete word after cursor
  1522. • describeBinding - display the binding of the next typed key sequence. 
  1523. • downcaseRegion - changes all uppercase letters to 
  1524.   lowercase in current region
  1525. • downcaseWord - changes all uppercase letters to 
  1526.   lowercase in current word
  1527. • dumpColors - dump current foreground and background
  1528.   colors into the current buffer in Alpha-readable
  1529.   format.
  1530. • dumpMacro - prompts for a name and then dumps a tcl proc representation 
  1531.   of the current keyboard macro into the current window.
  1532. • endBufferSelect - extend selection to the end of the 
  1533.   buffer
  1534. • endKeyboardMacro - stop recording keyboard macro
  1535. • endLineSelect - extend selection to the end of line
  1536. • endOfBuffer - move insertion to the end of the buffer
  1537. • endOfLine - move insertion to the end of the line
  1538. • exchangePointAndmark - exchange the current 'mark' 
  1539.   w/ the current insertion point
  1540. • execute - prompt user for a function or macro. The 
  1541.   tab key acts as a "completion" command.
  1542. • executeKeyboardMacro - execute the current keyboard 
  1543.   macro
  1544. • fileInfo - prompts for a file, and displays type, 
  1545.   creator, sizes of both data and resource forks, last
  1546.   modification time, and creation time
  1547. • fileRemove - prompts for a file, and removes it
  1548. • findTag - prompt user for a function name and attempt 
  1549.   to use the file 'cTAGS' to locate the function's 
  1550.   definition
  1551. • find - bring up the find dialog
  1552. • findFile - open a file in a new window
  1553. • foreColor - set foreground (text) color
  1554. • forwardCharSelect - extend selection one character 
  1555.   forward
  1556. • forwardChar - move insertion one character forward
  1557. • forwardWord - move insertion one word forward
  1558. • freeMem - give a rough approximation of the current 
  1559.   memory reserves of ALPHA
  1560. • getAscii - displays the ASCII code for character at 
  1561.   current insertion point
  1562. • getPathName - present the user w/ a SFGetFIle dialog 
  1563.   and paste the complete path-name of the chosen file
  1564.   into the current window
  1565. • gotoLine - go to a line number
  1566. • gotoMark - goto named mark, use 'mark' in macros.
  1567. • includeFile - expand the current selection to include 
  1568.   the suffix and use the var 'includePath' to try to 
  1569.   find the include file. 
  1570. • indentLine - semi-intelligent indent. If cursor is
  1571.   before first non-white space of line, the line is
  1572.   indented and the selection is placed at the start
  1573.   of the non-white space text
  1574. • insertAscii - prompts for an ASCII code and inserts
  1575.   into text.
  1576. • insertFile - prompts for a file name and inserts the
  1577.   corresponding file into the current window. Not
  1578.   undoable.
  1579. • insertPathName - present the user w/ a SFGetFIle dialog 
  1580.   and paste the complete path-name of the chosen file
  1581.   into the current window
  1582. • insertToTop - make the line that the insertion point 
  1583.   is on the first line shown, and display the current 
  1584.   line number along w/ the total number of lines in file
  1585. • isearch - incremental search: searches w/o a dialog,
  1586.   searches as you type the search pattern. Does not do
  1587.   regular expression searches. 'matchWords' 
  1588.   automatically set to false.
  1589. • iterationCount - allows actions to be repeated many 
  1590.   times. "option-u 44 =" inserts 44 '='s into current 
  1591.   window. Also can be used to execute any function or 
  1592.   macro (including the keyboard macro) many times.
  1593. • keyAscii - insert ascii representation (in decimal)
  1594.   of the keydown event, plus a modifier string, if 
  1595.   necessary.
  1596. • keyCode - insert the key code along w/ a string 
  1597.   representing and modifiers into the current window.
  1598.   Can be used to create bindings in 'Alphabits'.
  1599. • killLine - kill text from insertion point to the end 
  1600.   of the line. If the line has no text, delete the line 
  1601.   and move succeeding lines up one.
  1602. • killWindow - kill current window
  1603. • listBindings - list all current bindings.
  1604. • load - loads hilited text, or entire window if 
  1605.   nothing is hilited. 'load'ing means that whatever 
  1606.   bindings or macro definitions are present in the 
  1607.   loaded text take effect
  1608. • markHilite - This is the 'Hilite' from the 'Edit'
  1609.   menu. If there is a currently hilited selection, the 
  1610.   selection is unhilited, leaving the mark and the 
  1611.   insertion point around the old selection. If there 
  1612.   is not a selection, the region between the insertion 
  1613.   point and the mark is selected.
  1614. • matchBrace - moves the insertion point to the 
  1615.   character that matches the character after the current 
  1616.   insertion point
  1617. • moveInsertionHere - move the insertion point to the 
  1618.   first line displayed
  1619. • new - opens an untitled window
  1620. • nextLineSelect - extend selection to the next line
  1621. • nextLine - move insertion point to next line
  1622. • nextWindow - select next window
  1623. • oneSpace - converts whitespace surrounding insertion
  1624.   into a single space.
  1625. • openLine - insert a new line following the current 
  1626.   one and move the insertion point to it
  1627. • pageBack - display prev screenful, move the
  1628.   insertion point if 'moveInsertion' enabled
  1629. • pageForward - display next screenful, move the
  1630.   insertion point if 'moveInsertion' enabled
  1631. • pageSetup - display the printing PageSetup dialog.
  1632. • paste - insert the last chunk of text created by 'cut' 
  1633.   or 'copy'
  1634. • prefixChar - used to further modify the next keystroke 
  1635.   combination, in the same manner as using the shift key 
  1636.   in the next keystroke
  1637. • prevLineSelect - extend selection to the previous line
  1638. • prevWindow - select previous window
  1639. • previousLine - move insertion point to the previous 
  1640.   line
  1641. • print - print front window
  1642. • quit - quits ALPHA
  1643. • rectMarkHilite - creates a rectangular selection 
  1644.   between the mark and the insertion point.
  1645. • redo - redo the next action that has been undone but 
  1646.   not redone
  1647. • removeMark - allows marks to be removed.
  1648. • repeatSearchBackward - repeat search backward
  1649. • repeatSearchForward - repeat search forward
  1650. • restoreVars - restore variables to saved state, 
  1651.   see 'saveVars'
  1652. • revert - revert the file to it's last saved version
  1653. • rsearch - reverse incremental search, see 'isearch'.
  1654. • save - save current window
  1655. • saveAs - save current window with new name
  1656. • saveVars - save variable state, see 'restoreVars'
  1657. • scrollDownLine - same action as that which occurs when 
  1658.   the down arrow in the vertical scrollbar is selected
  1659. • scrollLeftCol - same action as that which occurs when
  1660.   the left arrow in the horizontal scrollbar is selected
  1661. • scrollRightCol - same action as that which occurs when
  1662.   the right arrow in the horizontal scrollbar is 
  1663.   selected
  1664. • scrollUpLine - same action as that which occurs when 
  1665.   the up arrow in the vertical scrollbar is selected
  1666. • searchEnter - use current selection for future 
  1667.   searches
  1668. • searchNext - search next file.
  1669. • searchRall - replace all further occurrences in the 
  1670.   current file
  1671. • searchReplace - replace the current selection
  1672. • searchRfa - replace the current selection and find 
  1673.   next occurrence
  1674. • setMark - set the current mark to the insertion point
  1675. • setFontsTabs - bring up font and tab dialog
  1676. • setNamedMark - set named mark
  1677. • shell - open the Tcl shell.
  1678. • shiftLeftRegion - shifts the current region left a tab
  1679. • shiftRightRegion - shift the current region right a 
  1680.   tab
  1681. • sortMarks - sorts all marks of open windows, w/o 
  1682.   setting the dirty flag. If the files are saved, the 
  1683.   marks will be saved in alphabetical order.
  1684. • spacesToTabs - convert spaces in selection to tabs
  1685. • startEscape - used to further modify the next 
  1686.   keystroke combination, in the same manner as using the 
  1687.   shift key in the next keystroke
  1688. • startKeyboardMacro - start recording keyboard macro
  1689. • tab - insert a tab
  1690. • tabsToSpaces - convert tabs in selection to spaces.
  1691. • tclFileCompletion - completes the previous word as a
  1692.   file is in a shell window
  1693. • undo - undo the last action that has not been undone
  1694. • upcaseRegion - convert all lowercase letters to 
  1695.   uppercase in the current region
  1696. • upcaseWord - convert all lowercase letters to 
  1697.   uppercase in the current word
  1698. • wrap - see the section on "Fill" routines.
  1699. • yank - insert the last piece of deleted text of less
  1700.   than 1k. Consecutive deletes are concatenated.
  1701.   together.
  1702. • zapInvisibles - removes chars < ascii 32, except for
  1703.   LF's and CR's.
  1704. • zoom - zooms the current window
  1705.  
  1706.  
  1707. ============================================================================= 
  1708. = Variables 
  1709. ============================================================================= 
  1710.  
  1711. There are two different kinds of variables in the Alpha world. These are 
  1712. internal variables and Tcl variables. You can only directly access the 
  1713. latter. However, the internal variables can be modified by creating a Tcl 
  1714. variable of the same name and "binding" it to its internal counterpart via 
  1715. the 'shadowVar' command (See the "Alpha Tcl Extensions" file under the 
  1716. "Help" menu for 'shadowVar's syntax). The following is a listing of the 
  1717. internal variables that can be bound using 'shadowVar': 
  1718.  
  1719. autoSave       • If TRUE, buffers (except untitled buffers) are automatically
  1720.                  saved every 'changesLim' changes.
  1721. backExtension  • suffix to add to file name to create
  1722.                  name of backup file. Initially ".BAK".
  1723. backup         • if TRUE, Alpha makes a backup of 
  1724.                  every file before writing new data.
  1725. backupFolder   • if 'backupFolder' is true and the folder named by 
  1726.                  'backupFolderName' is on the same volume as the original, the 
  1727.                  backup file is created in the 'backupFolderName' folder.
  1728. backupFolderName • name of folder to place backups.
  1729. bwWindows      • if true, Alpha will use 1-bit windows
  1730.                  even if color is available. This speeds
  1731.                  refresh quite a bit on slow color 
  1732.                  machines such as the IIsi.
  1733. changesLim     • number of changes to a window before 
  1734.                  garbage collection or autosave is done.
  1735. currFileSet    • name of currently selected file set.
  1736. defaultFont    • font to use on new windows and files 
  1737.                  which don't have associated font 
  1738.                  specification resources.
  1739. defHeight      • If 'fullScreen' set, this is default 
  1740.                  height in pixels.
  1741. defWidth       • If 'fullScreen' set, this is default 
  1742.                  width in pixels.
  1743. elecLBrace     • Electric 'C' left brace on.
  1744. elecRBrace     • Electric 'C' right brace on.
  1745. electricSemi   • Electric 'C' semicolon on.
  1746. fillColumn     • Number of columns use as limit for
  1747.                  "fill" routines. See 'leftFillColumn'
  1748. fontSaving     • if '-1', Alpha never saves font info,
  1749.                  if '1', Alpha always saves font info,
  1750.                  '0', Alpha saves font info if the font
  1751.                  or size is different than the default.
  1752. fontSize       • Default size of fonts used to display 
  1753.                  files.
  1754. fullNames      • Windows display pathnames instead of 
  1755.                  mere file names.
  1756. fullScreen     • If on, all windows are start in the 
  1757.                  same place, and have the dimension 
  1758.                  specified by 'defHeight' and 
  1759.                  'defWidth'.
  1760. funcPar        • Used in defining the "Func" title-bar menu, see Alpha 
  1761.                    help.
  1762. funcExpr       • Set to the regular expression that 
  1763.                  ALPHA uses to find function 
  1764.                  declarations.
  1765. funcTitle      • Text to put in title-bar menu header.
  1766.                  See the Popup-Menus section for more
  1767.                  information.
  1768. horScrollBar   • If set, use horizontal scrollbar.
  1769. includePath    • A list of the path-names of the 
  1770.                  directories to search for include 
  1771.                  files, separated by semi-colons, such
  1772.                  as:
  1773.                    "Disk:C:edit;Disk:C:THINK C:include;"
  1774.                  The current directory can be included
  1775.                  by using consecutive semi-colons as:
  1776.                  "Disk:C:edit;Disk:C:THINK C:inc;;"
  1777. indentOnCR     • Auto-indent on carriage return.
  1778. leftFillColumn • Number of blanks left at beginning of 
  1779.                  lines by 'fill' routines. 
  1780. markLabel       • If a window is opened through either 'edit' or 'fileMenu' 
  1781.                  and the '-m' option was set, this string is used as the label of the 
  1782.                  marks menu.
  1783. markSorting       • Controls the order in which marks are saved into a file. 
  1784.                  '0' means the order in which they are defined, '1' means file 
  1785.                  order, and '2' means alphabetical order.
  1786. moveInsertion  • if true, 'pageBack' and 'pageForward'
  1787.                  move the insertion point
  1788. numWinsToTile  • specifies the number of windows tile
  1789.                  commands should affect.
  1790. openAllFIles   • if true, or it option key down, files 
  1791.                  of all types are openable, not just
  1792.                  'TEXT'.
  1793. optionIsMeta   • If set, the key combination with escape
  1794.                  is used instead of the option key
  1795.                  combination. Note that some 
  1796.                  combinations with option chars are
  1797.                  dead keys.
  1798. paraColumn     • Alpha automatically wraps files
  1799.                 that contains lines longer than this. 
  1800. posActivate    • If true, then merely moving the mouse
  1801.                  over a window activates. For those
  1802.                  X11-twm lovers.
  1803. powerThumb       • If true, vertical scrollbars have power thumbs.
  1804. protoFile      • name of file to dump prototypes into.
  1805. replaceStr       • Text for the search and replace functions.
  1806. savedState       • set to either "mpw", "think", or "none" depending on how 
  1807.                  much information you wish Alpha to save in the resource fork of the 
  1808.                  files you edit. See the "Files" section of this file for more 
  1809.                  information.
  1810. searchStr       • Text for the search and replace functions.
  1811. showRowCol     • if set, row and col are continuously
  1812.                  displayed in the title bar. 
  1813. showMenuHeads  • If set, the function and mark menus can 
  1814.                  be selected from the title bar.
  1815. sortColumn     • column to use for sort routine.
  1816. sortedIsDefault• if set, sorted is the default for 
  1817.                  function and section menus.
  1818. suppressHeader • Suppress header on printed pages.
  1819. tabSize        • Default number of characters per tab.
  1820. tagFile        • complete path-name of tag file
  1821. tempMem        • if zero, Alpha will not use temporary
  1822.                  memory.
  1823. undoOn         • used to turn undo on and off. When undo
  1824.                  is turned off, all undo info is lost.
  1825.                  Useful when doing global replaces, etc.
  1826. wordBreak       • Regular expression used to defines words for all internal 
  1827.                  operations. 
  1828. wordBreakPreface • Prepended to 'wordBreak' when looking backwards for a 
  1829.                  word. See the "Word Break" section of this file for more 
  1830.                  information.
  1831. wordWrap       • if true, lines exceeding 'fillColumn'
  1832.                  in length are automatically wrapped
  1833.                  during normal text insertion (typing)
  1834.  
  1835.  
  1836.  
  1837.